libxc: Fix bugs in xc_exchange_page: pfn_type indexed by gpfn.
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 2 Jul 2009 10:33:43 +0000 (11:33 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 2 Jul 2009 10:33:43 +0000 (11:33 +0100)
Signed-off-by: Jiang, Yunhong <yunhong.jiang@intel.com>
tools/libxc/xc_offline_page.c

index 892f12cf7f487489a56f45f9a8704cc533f59649..f25cfbd7c762a7a8f9a65cb5b847c5edfe053d30 100644 (file)
@@ -583,7 +583,7 @@ int xc_exchange_page(int xc_handle, int domid, xen_pfn_t mfn)
     /* Don't exchange CR3 for PAE guest in PAE host environment */
     if (minfo.guest_width > sizeof(long))
     {
-        if ( (minfo.pfn_type[mfn] & XEN_DOMCTL_PFINFO_LTABTYPE_MASK) ==
+        if ( (minfo.pfn_type[gpfn] & XEN_DOMCTL_PFINFO_LTABTYPE_MASK) ==
                     XEN_DOMCTL_PFINFO_L3TAB )
             goto failed;
     }
@@ -621,7 +621,7 @@ int xc_exchange_page(int xc_handle, int domid, xen_pfn_t mfn)
     old_ptes.cur = 0;
 
     /* Unpin the page if it is pined */
-    if (minfo.pfn_type[mfn] & XEN_DOMCTL_PFINFO_LPINTAB)
+    if (minfo.pfn_type[gpfn] & XEN_DOMCTL_PFINFO_LPINTAB)
     {
         mops.cmd = MMUEXT_UNPIN_TABLE;
         mops.arg1.mfn = mfn;